diff -r -u --new-file wu-ftpd-2.4/README wu-ftpd-2.4-fixed/README
--- wu-ftpd-2.4/README	Fri Apr  1 14:03:58 1994
+++ wu-ftpd-2.4-fixed/README	Wed Dec 31 19:00:00 1969
@@ -1,61 +0,0 @@
-=================
-= RELEASE NOTES =
-=================
-
-WASHINGTON UNIVERSITY FTP SERVER, RELEASE 2.2 - Apr 1, 1994
-
-wu-ftpd is a replacement ftp server for Un*x systems.  Besides
-supporting the ftp protocol defined in RFC 959, it adds the following
-features:
-    o  logging of transfers
-    o  logging of commands
-    o  on the fly compression and archiving
-    o  classification of users on type and location
-    o  per class limits
-    o  per directory upload permissions
-    o  restricted guest accounts
-    o  system wide and per directory messages.
-    o  directory alias
-    o  cdpath
-    o  filename filter
-
-This will be the final full release of the 2.x release of wu-ftpd.
-Beside bug-fixes, no more work will be done on the 2.x versions.  We
-plan to rewrite large parts of the server and integrate the extended
-functionality into the next big release.
-
-For help setting up this server, you can try the following sources:
-    o  The wu-ftpd mailing list.  To subscribe, send email with the 
-       message body of "subscribe wu-ftpd" to listserv@wunet.wustl.edu
-       NOTE: I am subscribed to wu-ftpd, there is no need to mail me also.
-    o  _Managing Internet Information Services_, An O'Reilly and Associates
-       book.  Expected release: April/May.  This book has an excellent
-       chapter on setting up anonymous ftp sites using standard ftp servers
-       as well as the wu-ftp server.
-    
-The following notices apply to this package:
-
-    Copyright (c) 1994  Washington University in Saint Louis.
-    All rights reserved.
-  
-    This product includes software developed by Washington University in 
-    Saint Louis and its contributors
-  
-    Copyright (c) 1980, 1985, 1988, 1989, 1990  The Regents of the 
-    University of California.  All rights reserved.
-  
-    This product includes software developed by the University of California,
-    Berkeley and its contributors.
-  
-    THIS SOFTWARE IS PROVIDED BY WASHINGTON UNIVERSITY AND CONTRIBUTORS
-    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-    A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASHINGTON
-    UNIVERSITY OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-    POSSIBILITY OF SUCH DAMAGE.
diff -r -u --new-file wu-ftpd-2.4/README.OLD wu-ftpd-2.4-fixed/README.OLD
--- wu-ftpd-2.4/README.OLD	Wed Dec 31 19:00:00 1969
+++ wu-ftpd-2.4-fixed/README.OLD	Fri Apr  1 14:03:58 1994
@@ -0,0 +1,61 @@
+=================
+= RELEASE NOTES =
+=================
+
+WASHINGTON UNIVERSITY FTP SERVER, RELEASE 2.2 - Apr 1, 1994
+
+wu-ftpd is a replacement ftp server for Un*x systems.  Besides
+supporting the ftp protocol defined in RFC 959, it adds the following
+features:
+    o  logging of transfers
+    o  logging of commands
+    o  on the fly compression and archiving
+    o  classification of users on type and location
+    o  per class limits
+    o  per directory upload permissions
+    o  restricted guest accounts
+    o  system wide and per directory messages.
+    o  directory alias
+    o  cdpath
+    o  filename filter
+
+This will be the final full release of the 2.x release of wu-ftpd.
+Beside bug-fixes, no more work will be done on the 2.x versions.  We
+plan to rewrite large parts of the server and integrate the extended
+functionality into the next big release.
+
+For help setting up this server, you can try the following sources:
+    o  The wu-ftpd mailing list.  To subscribe, send email with the 
+       message body of "subscribe wu-ftpd" to listserv@wunet.wustl.edu
+       NOTE: I am subscribed to wu-ftpd, there is no need to mail me also.
+    o  _Managing Internet Information Services_, An O'Reilly and Associates
+       book.  Expected release: April/May.  This book has an excellent
+       chapter on setting up anonymous ftp sites using standard ftp servers
+       as well as the wu-ftp server.
+    
+The following notices apply to this package:
+
+    Copyright (c) 1994  Washington University in Saint Louis.
+    All rights reserved.
+  
+    This product includes software developed by Washington University in 
+    Saint Louis and its contributors
+  
+    Copyright (c) 1980, 1985, 1988, 1989, 1990  The Regents of the 
+    University of California.  All rights reserved.
+  
+    This product includes software developed by the University of California,
+    Berkeley and its contributors.
+  
+    THIS SOFTWARE IS PROVIDED BY WASHINGTON UNIVERSITY AND CONTRIBUTORS
+    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+    A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASHINGTON
+    UNIVERSITY OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+    INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+    BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+    LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+    CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+    ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE.
diff -r -u --new-file wu-ftpd-2.4/README.SECURITY.FIX wu-ftpd-2.4-fixed/README.SECURITY.FIX
--- wu-ftpd-2.4/README.SECURITY.FIX	Wed Dec 31 19:00:00 1969
+++ wu-ftpd-2.4-fixed/README.SECURITY.FIX	Sun Jun  4 15:43:23 1995
@@ -0,0 +1,48 @@
+README.SECURITY.FIX
+June 3, 1995 16:00 EST
+
+
+	On June 2, 1995, Australian CERT announced that some Linux 
+	distribution may have a problem with pre-compiled binaries 
+	of the Washington University FTP Server Version 2.4
+
+	It appears that Slackware 2.0-2.3, Yggdrasil  Plug&Play (Fall 94),
+	Debian Distribution and probably a lot of others are/were shipped
+	with the misconfigured ftp server. Unfortunately, such 
+	misconfiguration made the ftp server a subject to attacks that allowed
+	any user of a system to gain the root access.
+
+	This version of the Washington University FTP server is correctly
+	configured to prevent such attacks. I also cleaned the Makefile 
+	in the support/ subdirectory so it compiles cleanly under Linux.
+	This version was created from the source code of the wu.ftpd 2.4
+	patched using wu-ftpd-2.4.patch.gz
+	
+
+	CONFIGURING wu.ftpd 2.4 FOR SYSTEMS WITH AND WITHOUT SHADOW
+
+		By default, this wu.ftpd will be build with a shadow
+		password support. If your system does not have shadow
+		passwords (I do recommend you to get it), copy the file
+		src/config/config.lnx.no-shadow into src/config/config.lnx
+
+
+	CORRECTING PATHNAMES
+
+		If you would like to place your files in different places,
+		edit src/pathnames.h. 
+
+		WARNING: THE VULNERABLE CONFIGURATION WAS CREATED BY
+			 SPECIFYING /bin IN THE _PATH_EXECPATH. MAKE SURE
+			 THAT THE DIRECTORY SPECIFIED IN _PATH_EXEC PATH
+			 IS WRITE-PROTECTED FROM USERS AND ALL PROGRAMS
+			 IN THAT DIRECTORY ARE "AWARE" OF BEING EXECUTED
+			 WITH UID/GID 0 WHILE RESTRICTED WITH EUID/EGID!
+
+
+
+             For more information please see Linux Security WWW
+              http://bach.cis.temple.edu/linux/linux-security/
+
+
+			Alexander O. Yuriev <alex@bach.cis.temple.edu>
diff -r -u --new-file wu-ftpd-2.4/src/access.c wu-ftpd-2.4-fixed/src/access.c
--- wu-ftpd-2.4/src/access.c	Wed Apr 13 17:02:22 1994
+++ wu-ftpd-2.4-fixed/src/access.c	Sat Jun  3 12:36:07 1995
@@ -100,7 +100,7 @@
     while (match && isalpha(*whattime) && isupper(*whattime)) {
         match = 0;
         for (loop = 0; loop < 8; loop++) {
-            if (strncmp(days[loop], whattime, 2) == NULL) {
+            if (strncmp(days[loop], whattime, 2) == (int) NULL) {
                 whattime += 2;
                 match = 1;
                 if ((wday == loop) | ((loop == 7) && wday && (wday < 6))) {
@@ -110,7 +110,7 @@
         }
     }
 
-    if (strncmp(whattime, "Any", 3) == NULL) {
+    if (strncmp(whattime, "Any", 3) == (int) NULL) {
         validday = 1;
         whattime += 3;
     }
@@ -428,7 +428,7 @@
     struct aclmember *entry = NULL;
 
     if (msgpathbuf)
-        *msgpathbuf = NULL;
+        *msgpathbuf = (char) NULL;
 
     /* limit <class> <n> <times> [<message_file>] */
     while (getaclentry("limit", &entry)) {
diff -r -u --new-file wu-ftpd-2.4/src/acl.c wu-ftpd-2.4-fixed/src/acl.c
--- wu-ftpd-2.4/src/acl.c	Wed Apr 13 17:02:25 1994
+++ wu-ftpd-2.4-fixed/src/acl.c	Sat Jun  3 12:36:18 1995
@@ -93,7 +93,7 @@
     aclmembers = (struct aclmember *) NULL;
     acltail = (struct aclmember *) NULL;
 
-    while (*aclptr != NULL) {
+    while (*aclptr != (char) NULL) {
         line = aclptr;
         while (*aclptr && *aclptr != '\n')
             aclptr++;
@@ -103,7 +103,7 @@
         if ((ptr = strchr(line, '#')) != NULL)
             /* allowed escaped '#' chars for path-filter (DiB) */
             if (*(ptr-1) != '\\')
-                *ptr = NULL;
+                *ptr = (char) NULL;
 
         ptr = strtok(line, " \t");
         if (ptr) {
@@ -153,7 +153,7 @@
     if (finfo.st_size == 0) {
         aclbuf = (char *) calloc(1, 1);
     } else {
-        if (!(aclbuf = malloc((unsigned) finfo.st_size + 1))) {
+        if (!(aclbuf = (char *) malloc((unsigned) finfo.st_size + 1))) {
             syslog(LOG_ERR, "could not malloc aclbuf (%d bytes)", finfo.st_size + 1);
             return (0);
         }
diff -r -u --new-file wu-ftpd-2.4/src/config/config.lnx wu-ftpd-2.4-fixed/src/config/config.lnx
--- wu-ftpd-2.4/src/config/config.lnx	Fri Apr  1 14:03:38 1994
+++ wu-ftpd-2.4-fixed/src/config/config.lnx	Sat Jun  3 13:30:59 1995
@@ -13,15 +13,12 @@
 #define OVERWRITE
 #undef  REGEX
 #define SETPROCTITLE
-#undef  SHADOW_PASSWORD
+#define SHADOW_PASSWORD
 #define UPLOAD
 #undef  USG
 #define SVR4
 
 #include <varargs.h>
 #include <bsd.h>
-
-typedef	int	mode_t
-typedef int SIGNAL_TYPE
 
 #include "../config.h"
diff -r -u --new-file wu-ftpd-2.4/src/config/config.lnx.no-shadow wu-ftpd-2.4-fixed/src/config/config.lnx.no-shadow
--- wu-ftpd-2.4/src/config/config.lnx.no-shadow	Wed Dec 31 19:00:00 1969
+++ wu-ftpd-2.4-fixed/src/config/config.lnx.no-shadow	Sat Jun  3 15:56:42 1995
@@ -0,0 +1,24 @@
+#undef  BSD
+#define HAVE_DIRENT
+#define HAVE_FLOCK
+#define HAVE_FTW
+#undef  HAVE_GETCWD
+#define HAVE_GETDTABLESIZE
+#undef  HAVE_PSTAT
+#define HAVE_ST_BLKSIZE
+#undef  HAVE_SYSINFO
+#define HAVE_UT_UT_HOST
+#define HAVE_VPRINTF
+#define LINUX
+#define OVERWRITE
+#undef  REGEX
+#define SETPROCTITLE
+#undef  SHADOW_PASSWORD
+#define UPLOAD
+#undef  USG
+#define SVR4
+
+#include <varargs.h>
+#include <bsd.h>
+
+#include "../config.h"
diff -r -u --new-file wu-ftpd-2.4/src/config/config.lnx.shadow wu-ftpd-2.4-fixed/src/config/config.lnx.shadow
--- wu-ftpd-2.4/src/config/config.lnx.shadow	Wed Dec 31 19:00:00 1969
+++ wu-ftpd-2.4-fixed/src/config/config.lnx.shadow	Sat Jun  3 15:56:51 1995
@@ -0,0 +1,24 @@
+#undef  BSD
+#define HAVE_DIRENT
+#define HAVE_FLOCK
+#define HAVE_FTW
+#undef  HAVE_GETCWD
+#define HAVE_GETDTABLESIZE
+#undef  HAVE_PSTAT
+#define HAVE_ST_BLKSIZE
+#undef  HAVE_SYSINFO
+#define HAVE_UT_UT_HOST
+#define HAVE_VPRINTF
+#define LINUX
+#define OVERWRITE
+#undef  REGEX
+#define SETPROCTITLE
+#define SHADOW_PASSWORD
+#define UPLOAD
+#undef  USG
+#define SVR4
+
+#include <varargs.h>
+#include <bsd.h>
+
+#include "../config.h"
diff -r -u --new-file wu-ftpd-2.4/src/edit wu-ftpd-2.4-fixed/src/edit
--- wu-ftpd-2.4/src/edit	Wed Dec 31 19:00:00 1969
+++ wu-ftpd-2.4-fixed/src/edit	Sat Jun  3 13:32:14 1995
@@ -0,0 +1 @@
+3
diff -r -u --new-file wu-ftpd-2.4/src/extensions.c wu-ftpd-2.4-fixed/src/extensions.c
--- wu-ftpd-2.4/src/extensions.c	Wed Apr 13 17:02:46 1994
+++ wu-ftpd-2.4-fixed/src/extensions.c	Sat Jun  3 12:36:20 1995
@@ -167,7 +167,7 @@
 
             case 'T':
                 strncpy(outptr, ctime(&curtime), 24);
-                *(outptr + 24) = NULL;
+                *(outptr + 24) = (char) NULL;
                 break;
 
             case 'F':
@@ -198,17 +198,17 @@
 
             case 's':
                 strncpy(outptr, shuttime, 24);
-                *(outptr + 24) = NULL;
+                *(outptr + 24) = (char) NULL;
                 break;
 
             case 'd':
                 strncpy(outptr, disctime, 24);
-                *(outptr + 24) = NULL;
+                *(outptr + 24) = (char) NULL;
                 break;
 
             case 'r':
                 strncpy(outptr, denytime, 24);
-                *(outptr + 24) = NULL;
+                *(outptr + 24) = (char) NULL;
                 break;
 
             case '%':
@@ -227,7 +227,7 @@
         }
         inptr++;
     }
-    *outptr = NULL;
+    *outptr = (char) NULL;
 }
 
 /*************************************************************************/
@@ -253,7 +253,7 @@
     (void) realpath(".", cwd);
 
     for (curptr = head; curptr != NULL; curptr = curptr->next)
-        if (strcmp(curptr->dirname, cwd) == NULL) {
+        if (strcmp(curptr->dirname, cwd) == (int) NULL) {
             if (!(curptr->dircode & dircode)) {
                 curptr->dircode |= dircode;
                 return (0);
@@ -345,7 +345,7 @@
                 show++;
             else {
                 for (which = 2; (which < MAXARGS) && ARG[which]; which++)
-                    if (strcasecmp(class, ARG[which]) == NULL)
+                    if (strcasecmp(class, ARG[which]) == (int) NULL)
                         show++;
             }
         if (mode == C_WD && ARG1 && !strncasecmp(ARG1, "cwd=", 4) &&
@@ -355,7 +355,7 @@
                 show++;
             else {
                 for (which = 2; (which < MAXARGS) && ARG[which]; which++)
-                    if (strcasecmp(class, ARG[which]) == NULL)
+                    if (strcasecmp(class, ARG[which]) == (int) NULL)
                         show++;
             }
         if (show && strlen(ARG0) > 0) {
@@ -417,7 +417,7 @@
                 show++;
             else {
                 for (which = 2; (which < MAXARGS) && ARG[which]; which++)
-                    if (strcasecmp(class, ARG[which]) == NULL)
+                    if (strcasecmp(class, ARG[which]) == (int) NULL)
                         show++;
             }
         if (mode == C_WD && ARG1 && !strncasecmp(ARG1, "cwd=", 4)
@@ -427,7 +427,7 @@
                 show++;
             else {
                 for (which = 2; (which < MAXARGS) && ARG[which]; which++)
-                    if (strcasecmp(class, ARG[which]) == NULL)
+                    if (strcasecmp(class, ARG[which]) == (int) NULL)
                         show++;
             }
         if (show) {
@@ -805,7 +805,7 @@
   if (sp = strrchr(path, '/'))  *sp = '\0';
   else strcpy(path, ".");
 
-  if ((realpath(path, cwdir)) == NULL) {
+  if ((realpath(path, cwdir)) == (char) NULL) {
       perror_reply(553, "Could not determine cwdir");
       return(0);
   }
@@ -867,7 +867,7 @@
       if (sp = strrchr(path, '/'))  *sp = '\0';
       else strcpy(path, ".");
 
-      if ((realpath(path, cwdir)) == NULL) {
+      if ((realpath(path, cwdir)) == (char) NULL) {
           perror_reply(553, "Could not determine cwdir");
           return(-1);
       }
diff -r -u --new-file wu-ftpd-2.4/src/ftpcmd.y wu-ftpd-2.4-fixed/src/ftpcmd.y
--- wu-ftpd-2.4/src/ftpcmd.y	Wed Apr 13 17:02:56 1994
+++ wu-ftpd-2.4-fixed/src/ftpcmd.y	Sat Jun  3 12:36:21 1995
@@ -694,7 +694,7 @@
 
 password:   /* empty */
         = {
-            $$ = malloc(1);
+            $$ = (char *) malloc(1);
             $$[0] = '\0';
         }
     |   STRING
@@ -1308,7 +1308,7 @@
 {
     char *p;
 
-    p = malloc((unsigned) strlen(s) + 1);
+    p = (char *) malloc((unsigned) strlen(s) + 1);
     if (p == NULL)
         fatal("Ran out of memory.");
     (void) strcpy(p, s);
diff -r -u --new-file wu-ftpd-2.4/src/ftpcount.c wu-ftpd-2.4-fixed/src/ftpcount.c
--- wu-ftpd-2.4/src/ftpcount.c	Wed Apr 13 17:03:02 1994
+++ wu-ftpd-2.4-fixed/src/ftpcount.c	Sat Jun  3 12:36:22 1995
@@ -95,7 +95,7 @@
     while (match && isalpha(*whattime) && isupper(*whattime)) {
         match = 0;
         for (loop = 0; loop < 8; loop++) {
-            if (strncmp(days[loop], whattime, 2) == NULL) {
+            if (strncmp(days[loop], whattime, 2) == (int) NULL) {
                 whattime += 2;
                 match = 1;
                 if ((wday == loop) | ((loop == 7) && wday && (wday < 6)))
@@ -104,7 +104,7 @@
         }
     }
 
-    if (strncmp(whattime, "Any", 3) == NULL) {
+    if (strncmp(whattime, "Any", 3) == (int) NULL) {
         validday = 1;
         whattime += 3;
     }
@@ -156,10 +156,10 @@
       linebuf[1024];
     int limit;
 
-    while (*aclbuf != NULL) {
+    while (*aclbuf != (char) NULL) {
         if (strncasecmp(aclbuf, "limit", 5) == 0) {
             for (crptr = aclbuf; *crptr++ != '\n';) ;
-            *--crptr = NULL;
+            *--crptr = (char) NULL;
             strcpy(linebuf, aclbuf);
             *crptr = '\n';
             (void) strtok(linebuf, " \t");  /* returns "limit" */
@@ -304,10 +304,10 @@
 
     (void) new_list(&list);
     myaclbuf = aclbuf;
-    while (*myaclbuf != NULL) {
+    while (*myaclbuf != (char) NULL) {
         if (strncasecmp(myaclbuf, "class", 5) == 0) {
             for (crptr = myaclbuf; *crptr++ != '\n';) ;
-            *--crptr = NULL;
+            *--crptr = (char) NULL;
             strcpy(linebuf, myaclbuf);
             *crptr = '\n';
             (void) strtok(linebuf, " \t");  /* returns "class" */
diff -r -u --new-file wu-ftpd-2.4/src/ftpd.c wu-ftpd-2.4-fixed/src/ftpd.c
--- wu-ftpd-2.4/src/ftpd.c	Wed Apr 13 17:17:18 1994
+++ wu-ftpd-2.4-fixed/src/ftpd.c	Sat Jun  3 12:36:22 1995
@@ -55,7 +55,7 @@
 #endif
 
 #include <netinet/in.h>
-#include <netinet/in_systm.h>
+#include <netinet/in_system.h>
 #include <netinet/ip.h>
 
 #define FTP_NAMES
@@ -224,6 +224,11 @@
 int swaitmax = SWAITMAX;
 int swaitint = SWAITINT;
 
+/* Mod by Lee Silverman 26 May 1994 to fix SIGNAL_TYPE never being defined. */
+#ifdef LINUX
+#define SIGNAL_TYPE void
+#endif /* linux? */
+
 SIGNAL_TYPE lostconn(int sig);
 SIGNAL_TYPE randomsig(int sig);
 SIGNAL_TYPE myoob(int sig);
@@ -294,6 +299,12 @@
 
     data_source.sin_port = htons(ntohs(ctrl_addr.sin_port) - 1);
     debug = 0;
+/* Mod By Lee Silverman 26 May 1994 to provide a logging facility */
+#ifdef LINUX
+#ifndef FACILITY
+#define FACILITY LOG_DAEMON
+#endif (FACIITY?)
+#endif (Linux?)
 
 #ifdef FACILITY
     openlog("ftpd", LOG_PID | LOG_NDELAY, FACILITY);
@@ -999,7 +1010,7 @@
         }
 #endif
 
-        *guestpw = NULL;
+        *guestpw = (char) NULL;
         if (pw == NULL)
             salt = "xx";
         else
@@ -1223,11 +1234,11 @@
     static char buf[100];
     char *ptr = buf;
 
-    if ((options & O_COMPRESS) != NULL)
+    if ((options & O_COMPRESS) != (int) NULL)
         *ptr++ = 'C';
-    if ((options & O_TAR) != NULL)
+    if ((options & O_TAR) != (int) NULL)
         *ptr++ = 'T';
-    if ((options & O_UNCOMPRESS) != NULL)
+    if ((options & O_UNCOMPRESS) != (int) NULL)
         *ptr++ = 'U';
     if (options == 0)
         *ptr++ = '_';
@@ -1339,7 +1350,7 @@
             strcpy(namebuf, cptr->external_cmd);
             if ((ptr = strchr(namebuf, ' ')) != NULL)
                 *ptr = '\0';
-            if (stat(namebuf, &st) != NULL) {
+            if (stat(namebuf, &st) != (int) NULL) {
                 syslog(LOG_ERR, "external command %s not found",
                        namebuf);
                 (void) reply(550,
diff -r -u --new-file wu-ftpd-2.4/src/ftpshut.c wu-ftpd-2.4-fixed/src/ftpshut.c
--- wu-ftpd-2.4/src/ftpshut.c	Fri Apr  1 14:03:42 1994
+++ wu-ftpd-2.4-fixed/src/ftpshut.c	Sat Jun  3 12:36:23 1995
@@ -185,10 +185,10 @@
     }
 
     myaclbuf = aclbuf;
-    while (*myaclbuf != NULL) {
+    while (*myaclbuf != (char) NULL) {
         if (strncasecmp(myaclbuf, "shutdown", 8) == 0) {
             for (crptr = myaclbuf; *crptr++ != '\n';) ;
-            *--crptr = NULL;
+            *--crptr = (char) NULL;
             strcpy(linebuf, myaclbuf);
             *crptr = '\n';
             (void) strtok(linebuf, " \t");  /* returns "shutdown" */
diff -r -u --new-file wu-ftpd-2.4/src/glob.c wu-ftpd-2.4-fixed/src/glob.c
--- wu-ftpd-2.4/src/glob.c	Fri Apr  1 14:03:42 1994
+++ wu-ftpd-2.4-fixed/src/glob.c	Sat Jun  3 12:36:24 1995
@@ -645,7 +645,7 @@
 strspl(cp, dp)
 	register char *cp, *dp;
 {
-	register char *ep = malloc((unsigned)(strlen(cp) + strlen(dp) + 1));
+	register char *ep = (char *) malloc((unsigned)(strlen(cp) + strlen(dp) + 1));
 
 	if (ep == (char *)0)
 		fatal("Out of memory");
diff -r -u --new-file wu-ftpd-2.4/src/hostacc.c wu-ftpd-2.4-fixed/src/hostacc.c
--- wu-ftpd-2.4/src/hostacc.c	Fri Apr  1 14:03:44 1994
+++ wu-ftpd-2.4-fixed/src/hostacc.c	Sat Jun  3 12:36:24 1995
@@ -69,7 +69,7 @@
         while (((ptHtmp = gethacc()) != (hacc_t *)NULL) && !iLineMatch)
         {
                 if ( (strcasecmp(pcRuser, ptHtmp->ha_login)) &&
-                      strcmp(ptHtmp->ha_login, "*") != NULL)
+                      strcmp(ptHtmp->ha_login, "*") != (int) NULL)
                         /* wrong user, check rest of file */
                         continue;
 
diff -r -u --new-file wu-ftpd-2.4/src/makefiles/Makefile.lnx wu-ftpd-2.4-fixed/src/makefiles/Makefile.lnx
--- wu-ftpd-2.4/src/makefiles/Makefile.lnx	Fri Apr  1 14:03:31 1994
+++ wu-ftpd-2.4-fixed/src/makefiles/Makefile.lnx	Sat Jun  3 13:18:13 1995
@@ -1,16 +1,16 @@
 CC       = gcc
-IFLAGS   = -I.. -I../support -I/usr/include/bsd
+IFLAGS   = -I.. -I../support -I/usr/include/bsd -I/usr/include/netinet
 LFLAGS   = -L../support
-CFLAGS   = -O -DDEBUG ${IFLAGS} ${LFLAGS}
-LIBES    = -lsupport -lbsd
+CFLAGS   = -O2 ${IFLAGS} ${LFLAGS}
+LIBES    = -lbsd -lsupport
 LIBC     = /usr/lib/libc.a
 LINTFLAGS=	
 LKERB    = -lauth -lckrb -lkrb -ldes
 MKDEP    = ../util/mkdep
 
-SRCS   = ftpd.c ftpcmd.c glob.c logwtmp.c popen.c vers.c access.c extensions.c \
+SRCS   = vers.c ftpd.c ftpcmd.c glob.c logwtmp.c popen.c access.c extensions.c \
 		 realpath.c acl.c private.c authenticate.c conversions.c hostacc.c
-OBJS   = ftpd.o ftpcmd.o glob.o logwtmp.o popen.o vers.o access.o extensions.o \
+OBJS   = vers.o ftpd.o ftpcmd.o glob.o logwtmp.o popen.o access.o extensions.o \
 		 realpath.o acl.o private.o authenticate.o conversions.o hostacc.o
 
 all: ftpd ftpcount ftpshut ckconfig
diff -r -u --new-file wu-ftpd-2.4/src/makefiles/Makefile.lnx.orig wu-ftpd-2.4-fixed/src/makefiles/Makefile.lnx.orig
--- wu-ftpd-2.4/src/makefiles/Makefile.lnx.orig	Wed Dec 31 19:00:00 1969
+++ wu-ftpd-2.4-fixed/src/makefiles/Makefile.lnx.orig	Fri Apr  1 14:03:31 1994
@@ -0,0 +1,51 @@
+CC       = gcc
+IFLAGS   = -I.. -I../support -I/usr/include/bsd
+LFLAGS   = -L../support
+CFLAGS   = -O -DDEBUG ${IFLAGS} ${LFLAGS}
+LIBES    = -lsupport -lbsd
+LIBC     = /usr/lib/libc.a
+LINTFLAGS=	
+LKERB    = -lauth -lckrb -lkrb -ldes
+MKDEP    = ../util/mkdep
+
+SRCS   = ftpd.c ftpcmd.c glob.c logwtmp.c popen.c vers.c access.c extensions.c \
+		 realpath.c acl.c private.c authenticate.c conversions.c hostacc.c
+OBJS   = ftpd.o ftpcmd.o glob.o logwtmp.o popen.o vers.o access.o extensions.o \
+		 realpath.o acl.o private.o authenticate.o conversions.o hostacc.o
+
+all: ftpd ftpcount ftpshut ckconfig
+
+ftpcount:	ftpcount.c pathnames.h
+	${CC} ${CFLAGS} -o $@ ftpcount.c vers.o ${LIBES}
+
+ftpshut:    ftpshut.c pathnames.h
+	${CC} ${CFLAGS} -o $@ ftpshut.c vers.o ${LIBES}
+
+ftpd: ${OBJS} ${LIBC}
+	${CC} ${CFLAGS} -o $@ ${OBJS} ${LIBES}
+
+ckconfig:   ckconfig.c
+	${CC} ${CFLAGS} -o $@ ckconfig.c
+
+index:	index.o ${LIBC}
+	${CC} -Bstatic -o $@ index.o
+
+vers.o: ftpd.c ftpcmd.y
+	sh newvers.sh
+	${CC} ${CFLAGS} -c vers.c
+
+clean:
+	rm -f ${OBJS} ftpd ftpcmd.c ftpshut ftpshut.o ftpcount ftpcount.o
+	rm -f core index index.o
+
+cleandir: clean
+	rm -f tags .depend
+
+depend: ${SRCS}
+	${MKDEP} ${CFLAGS} ${SRCS}
+
+lint: ${SRCS}
+	lint ${CFLAGS} ${LINTFLAGS} ${SRCS}
+
+tags: ${SRCS}
+	ctags ${SRCS}
diff -r -u --new-file wu-ftpd-2.4/src/pathnames.h wu-ftpd-2.4-fixed/src/pathnames.h
--- wu-ftpd-2.4/src/pathnames.h	Wed Apr 13 16:46:48 1994
+++ wu-ftpd-2.4-fixed/src/pathnames.h	Sat Jun  3 15:59:51 1995
@@ -30,11 +30,11 @@
  * @(#)pathnames.h 5.2 (Berkeley) 6/1/90 */
 
 #define _PATH_FTPUSERS  "/etc/ftpusers"
-#define _PATH_FTPACCESS "/usr/local/etc/ftpaccess"
-#define _PATH_EXECPATH  "/bin/ftp-exec"
-#define _PATH_PIDNAMES  "/usr/local/daemon/ftpd/ftp.pids-%s"
-#define _PATH_CVT       "/usr/local/etc/ftpconversions"
-#define _PATH_XFERLOG   "/usr/adm/xferlog"
+#define _PATH_FTPACCESS "/etc/ftpaccess"
+#define _PATH_EXECPATH  "/bin/ftp-exec"  /* DO NOT MAKE IT A NORMAL bin!!! */
+#define _PATH_PIDNAMES  "/usr/adm/ftpd/ftp.pids-%s"
+#define _PATH_CVT       "/etc/ftpconversions"
+#define _PATH_XFERLOG   "/usr/adm/ftpd/xferlog"
 #define _PATH_PRIVATE   "/etc/ftpgroups"
 
 #ifndef _PATH_UTMP
@@ -47,6 +47,6 @@
 #define _PATH_DEVNULL   "/dev/null"
 
 #ifdef  HOST_ACCESS
-#define _PATH_FTPHOSTS  "/usr/local/etc/ftphosts"
+#define _PATH_FTPHOSTS  "/etc/ftphosts"
 #endif
 
diff -r -u --new-file wu-ftpd-2.4/src/private.c wu-ftpd-2.4-fixed/src/private.c
--- wu-ftpd-2.4/src/private.c	Wed Apr 13 17:03:53 1994
+++ wu-ftpd-2.4-fixed/src/private.c	Sat Jun  3 12:36:26 1995
@@ -164,7 +164,7 @@
     if (finfo.st_size == 0) {
         passbuf = (char *) calloc(1, 1);
     } else {
-        if (!(passbuf = malloc((unsigned) finfo.st_size + 1))) {
+        if (!(passbuf = (char *) malloc((unsigned) finfo.st_size + 1))) {
             (void) syslog(LOG_ERR, "could not malloc passbuf (%d bytes)",
                           finfo.st_size + 1);
             return;
diff -r -u --new-file wu-ftpd-2.4/src/realpath.c wu-ftpd-2.4-fixed/src/realpath.c
--- wu-ftpd-2.4/src/realpath.c	Fri Apr  1 14:03:45 1994
+++ wu-ftpd-2.4-fixed/src/realpath.c	Sat Jun  3 12:36:27 1995
@@ -78,7 +78,7 @@
 		seteuid(userid);
 	}
     } else
-        *workpath = NULL;
+        *workpath = (char) NULL;
 
     /* curpath is the path we're still resolving      */
     /* linkpath is the path a symbolic link points to */
@@ -86,7 +86,7 @@
 
   loop:
     where = curpath;
-    while (*where != NULL) {
+    while (*where != (char) NULL) {
         if (!strcmp(where, ".")) {
             where++;
             continue;
@@ -105,14 +105,14 @@
                     last = ptr;
                 ptr++;
             }
-            *last = NULL;
+            *last = (char) NULL;
             continue;
         }
         ptr = strchr(where, '/');
         if (!ptr)
             ptr = where + strlen(where) - 1;
         else
-            *ptr = NULL;
+            *ptr = (char) NULL;
 
         strcpy(namebuf, workpath);
         for (last = namebuf; *last; last++)
diff -r -u --new-file wu-ftpd-2.4/src/vers.c wu-ftpd-2.4-fixed/src/vers.c
--- wu-ftpd-2.4/src/vers.c	Wed Apr 13 17:38:41 1994
+++ wu-ftpd-2.4-fixed/src/vers.c	Sat Jun  3 13:32:14 1995
@@ -1 +1 @@
-char version[] = "Version wu-2.4(1) Wed Apr 13 16:38:41 CDT 1994";
+char version[] = "Version wu-2.4(3) Sat Jun 3 13:32:14 EDT 1995";
diff -r -u --new-file wu-ftpd-2.4/support/ftw.c wu-ftpd-2.4-fixed/support/ftw.c
--- wu-ftpd-2.4/support/ftw.c	Fri Apr  1 14:03:54 1994
+++ wu-ftpd-2.4-fixed/support/ftw.c	Sat Jun  3 12:36:28 1995
@@ -149,7 +149,7 @@
 					break;
 		}
 		if (cur.off) {
-			*name = NULL;
+			*name = (char) NULL;
 			if ( (cur.dirp = opendir(bp)) ) {
 				seekdir(cur.dirp, cur.off);
 				/* tricky; if we have to reset the directory pointer we know
diff -r -u --new-file wu-ftpd-2.4/support/ftw.c.orig wu-ftpd-2.4-fixed/support/ftw.c.orig
--- wu-ftpd-2.4/support/ftw.c.orig	Wed Dec 31 19:00:00 1969
+++ wu-ftpd-2.4-fixed/support/ftw.c.orig	Fri Apr  1 14:03:54 1994
@@ -0,0 +1,352 @@
+/*
+ * Copyright (c) 1988 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that the above copyright notice and this paragraph are
+ * duplicated in all such forms and that any documentation,
+ * advertising materials, and other materials related to such
+ * distribution and use acknowledge that the software was developed
+ * by the University of California, Berkeley.  The name of the
+ * University may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)ftw.c	5.3 (Berkeley) 8/5/88";
+
+#endif /* LIBC_SCCS and not lint */
+
+#include "../src/config.h"
+
+#ifdef HAVE_DIRENT
+#include <dirent.h>
+#else
+#include <sys/dir.h>
+#endif
+
+#include <errno.h>
+
+#include <sys/param.h>
+#include <sys/stat.h>
+#include <sys/stat.h>
+
+#include "ftw.h"
+
+#define	NODESC	-1
+
+#ifdef HAVE_SYMLINK
+# define	ISLINK(sb)	((sb.st_mode&S_IFMT) == S_IFLNK)
+#else
+# define lstat stat
+#endif
+
+#define	ISDIR(sb)	((sb.st_mode&S_IFMT) == S_IFDIR)
+#define	ISDOT(dp) \
+	(dp->d_name[0] == '.' && (!dp->d_name[1] || \
+	    (dp->d_name[1] == '.' && !dp->d_name[2])))
+
+extern int errno;
+static int g_fds,
+  (*g_fn) (),
+  g_opts;
+static char *bp;
+
+int treewalk(char *path, int (*fn) ( /* ??? */ ), int maxfds, int opts);
+
+/*
+ * cycle through the directories at the top of the tree, otherwise, once
+ * you run out of descriptors you have to keep reusing the same one and
+ * it gets *real* slow.
+ */
+typedef struct d_fd {
+	struct d_fd *next;
+	DIR *dirp;
+	off_t off;
+} FD;
+
+static FD *freep,
+ *node;
+
+static int
+walk(register char *name)
+{
+#ifdef HAVE_DIRENT
+	register struct dirent *dp;
+#else
+	register struct direct *dp;
+#endif
+	register int rval;
+	struct stat sb;
+	FD cur;
+	char *save,
+	 *strcpy(char *, const char *);
+
+	if (!freep)
+		freep = &cur;
+	else
+		node->next = &cur;
+	node = &cur;
+	cur.off = 0;
+
+  getfd:if (!g_fds) {
+		freep->off = telldir(freep->dirp);
+		closedir(freep->dirp);
+		freep = freep->next;
+		++g_fds;
+	}
+	if ( !(cur.dirp = opendir(bp)) ) {
+		if (errno == EMFILE) {
+			g_fds = 0;
+			goto getfd;
+		}
+		return (errno == EACCES ? (*g_fn) (bp, &sb, FTW_DNR) : -1);
+	} else
+		--g_fds;
+
+	for (; *name; ++name) ;
+	*name++ = '/';
+	for (rval = 0, dp = readdir(cur.dirp); dp; dp = readdir(cur.dirp)) {
+		if (ISDOT(dp))
+			continue;
+		(void) strcpy(name, dp->d_name);
+		if (lstat(bp, &sb)) {
+			rval = errno == EACCES ?
+				(*g_fn) (bp, &sb, FTW_NS) : -1;
+			if (rval)
+				break;
+		}
+#ifdef HAVE_SYMLINK
+		if (ISLINK(sb) && g_opts & FTW_SYMLINK)
+			if (stat(bp, &sb))
+				continue;
+#endif
+		if (!ISDIR(sb)) {
+			rval = (*g_fn) (bp, &sb, FTW_F);
+			if (rval)
+				break;
+			continue;
+		}
+		if (g_opts & FTW_DIRLAST)
+#ifdef HAVE_D_NAMLEN
+			save = name + dp->d_namlen;
+#else
+			save = name + strlen(dp->d_name);
+#endif
+		rval = (*g_fn) (bp, &sb, FTW_D);
+		if ( (rval && rval != NODESC) || (rval = walk(name)))
+			break;
+		if (g_opts & FTW_DIRLAST) {
+			*save = '\0';
+			rval = (*g_fn) (dp->d_name, &sb, FTW_D2);
+			if (rval)
+				if (rval == NODESC)
+					rval = 0;
+				else
+					break;
+		}
+		if (cur.off) {
+			*name = NULL;
+			if ( (cur.dirp = opendir(bp)) ) {
+				seekdir(cur.dirp, cur.off);
+				/* tricky; if we have to reset the directory pointer we know
+				 * it's the next one to reuse */
+				freep = &cur;
+				--g_fds;
+			}
+			/* directory moved from under us!!! */
+			else {
+				rval = -1;
+				break;
+			}
+		}
+	}
+	closedir(cur.dirp);
+	++g_fds;
+	return (rval);
+}
+
+static int
+chwalk(register char *name)
+{
+#ifdef HAVE_DIRENT
+	register struct dirent *dp;
+#else
+	register struct direct *dp;
+#endif
+
+	register int rval;
+	struct stat sb;
+	FD cur;
+	char *pwd,
+	 *getwd(char *),
+#ifndef NO_MALLOC_PROTO
+	 *malloc(size_t),
+#endif
+	 *strcpy(char *, const char *);
+
+	if (!freep)
+		freep = &cur;
+	else
+		node->next = &cur;
+	node = &cur;
+	cur.off = 0;
+
+	if (chdir(name))
+		return (errno == EACCES ? (*g_fn) (name, &sb, FTW_DNR) : -1);
+
+  getfd:if (!g_fds) {
+		freep->off = telldir(freep->dirp);
+		closedir(freep->dirp);
+		freep = freep->next;
+		++g_fds;
+	}
+	if ( !(cur.dirp = opendir(".")) )  {
+		if (errno == EMFILE) {
+			g_fds = 0;
+			goto getfd;
+		}
+		return (errno == EACCES ? (*g_fn) (".", &sb, FTW_DNR) : -1);
+	} else
+		--g_fds;
+
+	for (rval = 0, dp = readdir(cur.dirp); dp; dp = readdir(cur.dirp)) {
+		if (ISDOT(dp))
+			continue;
+		if (lstat(dp->d_name, &sb)) {
+			rval = errno == EACCES ?
+				(*g_fn) (dp->d_name, &sb, FTW_NS) : -1;
+			if (rval)
+				break;
+		}
+		pwd = NULL;
+#ifdef HAVE_SYMLINK
+		if (ISLINK(sb) && g_opts & FTW_SYMLINK) {
+			if (stat(dp->d_name, &sb))
+				continue;
+			if (ISDIR(sb)) {
+				/* NOSTRICT */
+				if (!(pwd = malloc((u_int) MAXPATHLEN))) {
+					rval = -1;
+					break;
+				}
+				if (!getwd(pwd)) {
+					rval = -1;
+					break;
+				}
+			}
+		}
+#endif
+		if (!ISDIR(sb)) {
+			rval = (*g_fn) (dp->d_name, &sb, FTW_F);
+			if (rval)
+				break;
+			continue;
+		}
+		rval = (*g_fn) (dp->d_name, &sb, FTW_D);
+		if ((rval && rval != NODESC) || (rval = chwalk(dp->d_name)))
+			break;
+		if (g_opts & FTW_DIRLAST) {
+			rval = (*g_fn) (dp->d_name, &sb, FTW_D2);
+			if (rval)
+				if (rval == NODESC)
+					rval = 0;
+				else
+					break;
+		}
+		if (pwd && chdir(pwd)) {
+			rval = -1;
+			break;
+		}
+		if (cur.off) {
+			if ( (cur.dirp = opendir(".")) ) {
+				seekdir(cur.dirp, cur.off);
+				/* tricky; if we have to reset the directory pointer we know
+				 * it's the next one to reuse */
+				freep = &cur;
+				--g_fds;
+			}
+			/* directory moved from under us!!! */
+			else {
+				rval = -1;
+				break;
+			}
+		}
+	}
+	closedir(cur.dirp);
+	++g_fds;
+	if (chdir(".."))
+		return (-1);
+	return (rval);
+}
+
+/* S5 compatible ftw(BA_LIB) */
+int
+ftw(char *path, int (*fn) ( /* ??? */ ), int maxfds)
+{
+	return (treewalk(path, fn, maxfds, 0));
+}
+
+int
+treewalk(char *path, int (*fn) ( /* ??? */ ), int maxfds, int opts)
+{
+	struct stat sb;
+	int rval;
+	char *pwd,
+	 *getwd(char *),
+#ifndef NO_MALLOC_PROTO
+	 *malloc(size_t),
+#endif
+	 *strcpy(char *, const char *);
+
+	if (lstat(path, &sb))
+		return (errno == EACCES ? (*fn) (path, &sb, FTW_NS) : -1);
+
+	pwd = NULL;
+#ifdef HAVE_SYMLINK
+	if (ISLINK(sb) && opts & FTW_SYMLINK) {
+		if (stat(path, &sb))
+			return (0);
+		if (ISDIR(sb)) {
+			/* NOSTRICT */
+			if (!(pwd = malloc((u_int) MAXPATHLEN)))
+				return (-1);
+			if (!getwd(pwd))
+				return (-1);
+		}
+	}
+#endif
+	if (!ISDIR(sb))
+		return ((*fn) (path, &sb, FTW_F));
+
+	if (!maxfds)
+		return (-1);
+	g_fds = maxfds == -1 ? getdtablesize(): maxfds;
+	g_fn = fn;
+	g_opts = opts;
+
+	if (!(opts & FTW_CHDIR) && !(bp = malloc((u_int) MAXPATHLEN))) {
+		errno = ENOMEM;
+		return (-1);
+	}
+	rval = (*fn) (path, &sb, FTW_D);
+	if (rval == NODESC)
+		rval = 0;
+	else if (!rval) {
+		if (opts & FTW_CHDIR)
+			rval = chwalk(path);
+		else
+			rval = walk(strcpy(bp, path));
+		if (!rval && opts & FTW_DIRLAST) {
+			rval = (*fn) (path, &sb, FTW_D2);
+			if (rval == NODESC)
+				rval = 0;
+		}
+	}
+	if (pwd && chdir(pwd))
+		return (-1);
+	return (rval);
+}
diff -r -u --new-file wu-ftpd-2.4/support/makefiles/Makefile.lnx wu-ftpd-2.4-fixed/support/makefiles/Makefile.lnx
--- wu-ftpd-2.4/support/makefiles/Makefile.lnx	Fri Apr  1 14:03:52 1994
+++ wu-ftpd-2.4-fixed/support/makefiles/Makefile.lnx	Sat Jun  3 13:14:12 1995
@@ -1,21 +1,30 @@
 CC     = gcc 
+COMPILEONLY = -c
 AR     = ar cq
 RANLIB = ranlib
-LIBC   = /lib/libc.a
-IFLAGS = 
+LIBC   = /usr/lib/libc.a
+IFLAGS = -I/usr/include/bsd
 LFLAGS = 
-CFLAGS = -O -DDEBUG ${IFLAGS} ${LFLAGS}
+CFLAGS = -O2 $(IFLAGS) $(LFLAGS) -m486 -pipe
 
 SRCS   = getusershell.c fnmatch.c strcasestr.c strerror.c authuser.c ftw.c
 OBJS   = getusershell.o fnmatch.o strcasestr.o strerror.o authuser.o ftw.o
  
-all: $(OBJS)
- 	-rm -f libsupport.a
- 	${AR} libsupport.a $(OBJS)
- 	${RANLIB} libsupport.a
- 
+
+all: $(OBJ)
+	  rm -rf libsupport.a
+	  $(CC) $(CFLAGS) $(COMPILEONLY) $(SRCS) 
+	  $(AR) libsupport.a $(OBJS)
+	  $(RANLIB) libsupport.a
+
+#all: $(OBJS)
+#
+# 	rm -f libsupport.a
+# 	${AR} libsupport.a $(OBJS)
+# 	${RANLIB} libsupport.a
+# 
 clean:
-	-rm -f *.o libsupport.a
+	rm -f *.o libsupport.a
 
 ftp.h:
 	install -c -m 444 ftp.h /usr/include/arpa
@@ -24,25 +33,25 @@
 	install -c -m 444 paths.h /usr/include
 
 fnmatch.o: fnmatch.c
-	${CC} ${CFLAGS} -c fnmatch.c
+	$(CC) $(CFLAGS) -c fnmatch.c
 
 getusershell.o: getusershell.c
-	${CC} ${CFLAGS} -c getusershell.c
+	$(CC) $(CFLAGS) -c getusershell.c
 
 strerror.o: strerror.c
-	${CC} ${CFLAGS} -c strerror.c
+	$(CC) $(CFLAGS) -c strerror.c
 
 strdup.o: strdup.c
-	${CC} ${CFLAGS} -c strdup.c
+	$(CC) $(CFLAGS) -c strdup.c
 
 strcasestr.o: strcasestr.c
-	${CC} ${CFLAGS} -c strcasestr.c
+	$(CC) $(CFLAGS) -c strcasestr.c
 
 strsep.o: strsep.c
-	${CC} ${CFLAGS} -c strsep.c
+	$(CC) $(CFLAGS) -c strsep.c
 
 authuser.o: authuser.c
-	${CC} ${CFLAGS} -c authuser.c
+	$(CC) $(CFLAGS) -c authuser.c
 
 ftw.o: ftw.c
-	${CC} ${CFLAGS} -c ftw.c
+	$(CC) $(CFLAGS) -c ftw.c
